package com.hk.utils;

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.hk.context.BaseContext;
import com.hk.core.UserUtlis;
import org.apache.catalina.User;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

@Component // 注册为Spring Bean
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        // 设置创建时间（自动获取当前时间）
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now());
        
        // 设置创建人（从当前登录用户获取，示例中使用固定值）
        this.strictInsertFill(metaObject, "createBy", String.class, getCurrentUserId());
        
        // 插入时同时填充更新时间和更新人
        this.fillStrategy(metaObject, "updateTime", LocalDateTime.now());
        this.fillStrategy(metaObject, "updateBy", getCurrentUserId());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 设置更新时间
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now());
        
        // 设置更新人
        this.strictUpdateFill(metaObject, "updateBy", String.class, getCurrentUserId());
    }

    /**
     * 获取当前登录用户ID（需根据项目实际情况实现）
     */
    private String getCurrentUserId() {
        UserUtlis user = BaseContext.getCurrent();
        Integer currentId = user.getUserId();
        return currentId+""; // 测试用固定值
    }
}